iT邦幫忙

2026 iThome 鐵人賽

DAY 16
0
Software Development

我是Java工程師,關於密碼學我想懂的不多系列 第 16 篇

Day15 - 對稱金鑰加密系統 - 操作模式 (三):CTR與GCM

  • 分享至 

  • xImage
  •  

前言

在前一章中,我們介紹了 CFB 與 OFB 模式。今天討論的 CTR(Counter Mode) 與 GCM(Galois/Counter Mode) 則是現代密碼學工程中最核心、最廣泛採用的兩種模式。

一、 計數器模式:CTR (Counter Mode)

在 CTR 模式下,加密引擎輸出的是「金鑰流(Keystream)」。此處加密引擎加密的對象不是明文資料,而是一個遞增的「計數器數字」。

1. 運算流程

  • 計數器建構:每個區塊由 Nonce(隨機數/初始向量) 與 Counter(遞增計數器) 組成唯一的輸入暫存器,並以||(串接符號)表示Nonce與Counter的串接。
  • 金鑰流生成:將計數器產生的值送入 AES 加密引擎,產出當前的金鑰流區塊Si。
  • 加密流程 (Encryption)
    https://ithelp.ithome.com.tw/upload/images/20261004/20128084iAs6PdxddS.png
  • 解密流程 (Decryption)
    解密時底層演算法依然呼叫「AES 加密 (Encrypt)」,將產出的相同金鑰流與密文進行 XOR 運算即可還原明文。

2. 特性分析

  • 完全支援平行化運算(Parallel Processing):由於每一個區塊的計數器都是獨立且可預先算出的,加密與解密都可以交由多核心 CPU 或 GPU 同時平行計算,效能極高。
  • 支援隨機存取(Random Access):若只需讀取超大檔案中的第 N 個區塊,無需像 CBC 或 CFB 一樣從頭解密,直接計算Nonce || Counter n 得到金鑰流直接對密文Cn XOR即可立即解密該區塊。
  • 無需 Padding(填充):最終資料由 XOR 產生,長度與明文完全相同。
  • 致命風險(Nonce + Counter 重用):若在同一把 Key 下重複使用相同的 Nonce,會產生完全相同的金鑰流,導致攻擊者可透過密文 XOR 直接還原明文(即著名的 Nonce Reuse 漏洞)。

二、 伽羅瓦/計數器模式:GCM (Galois/Counter Mode)

GCM 是現代安全性最高的 AEAD(認證加密) 模式。在 GCM 模式下,AES 輸出的同樣是「金鑰流(Keystream)」,但操作模式在產出密文後,還必透過GHASH (Galois Hash)認證算法(雜湊函數)計算防篡改的「認證標籤(Auth Tag)」。什麼是GHASH呢?簡單的說就是結合金鑰的雜湊函數,必須有同一把金要與同樣的資料才能產生一樣的雜湊值,關於**AEAD(認證加密)**我們會在Day20在特別拿出來說,這邊專注GCM的流程即可。

1. 運算流程

GCM 結合了 CTR 模式加密 與基於伽羅瓦體的 GHASH 認證算法:

  • 第一步:加密資料(CTR 模式)
  • 第二步:計算認證標籤(GHASH)
    將附加資料(AAD,如 IP 標頭或 HTTP Header)與所有密文 C1...Cn 輸入至伽羅瓦體進行 GHASH 運算,最後與 AES 加密的第一個計數器遮罩進行 XOR 運算,生成認證標籤 T
    https://ithelp.ithome.com.tw/upload/images/20261004/20128084sbVjXOxy63.png

2. 特性分析

  • 同時提供機密性與完整性 (AEAD):能有效防範中間人篡改密文,並徹底免疫 Padding Oracle 攻擊與位元翻轉攻擊(Bit-flipping Attack)。
  • 支援附加資料認證 (AAD):允許只對部分資料(例如封包表頭 AAD)做認證而不加密,同時對內文(Payload)做加密與認證。
  • 硬體加速友善:GHASH 在現代 CPU 上具備專屬的硬體指令集(如 Intel 的 PCLMULQDQ),計算速度極快。
  • Nonce 重用代價極高:若 GCM 重用 Nonce,不僅會洩漏明文,還會直接倒推算出 GHASH Key H,導致攻擊者可以隨意偽造有效的認證標籤 T。

Reference

  • 密碼學導論課程 - 陳君明教授

上一篇
Day14 - 對稱金鑰加密系統 - 操作模式 (二):CFB與OFB
下一篇
Day16 - 對稱金鑰加密系統:DES 加密演算法
系列文
我是Java工程師,關於密碼學我想懂的不多 共 29 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言